1. Field
The present invention relates generally to the binary code instrumentation domain, and, more specifically, to methods of designing platform-independent binary instrumentation systems.
2. Description
The process of binary instrumentation is widely used in software analysis, correctness checking, debugging, and performance monitoring, as well as in other areas where it has proved to comprise an efficient means of gaining control over a program being analyzed.
The idea behind binary instrumentation is to modify a compiled executable module prior to its execution to enable further analysis and/or debugging. Operating on binary executables eliminates the computational complexity normally associated with the processing of source codes, facilitates the creation of universal instrumentation and analysis systems, and enables dynamic instrumentation to be performed at runtime.
Many of the state-of-the-art binary instrumentation systems are highly dependent on processor instruction coding and other low-level system properties, and thus have to employ assembly language and very often are designed to operate on a limited set of software platforms or hardware architectures.
In addition, using an assembly language to implement platform-dependent code decreases the ease of debugging and support for the entire instrumentation system and sometimes prevents portability.
Therefore, a need exists for the capability to provide higher portability and manageability for binary instrumentation systems.